package models

import (
	"time"

	"gorm.io/gorm"
)

// Comment 评论模型 - 对应Typecho的comments表
type Comment struct {
	ID            uint           `gorm:"primaryKey;column:coid" json:"id"`
	CID           uint           `gorm:"column:cid;index" json:"cid"`                // 对应内容ID
	Created       int64          `gorm:"not null;default:0" json:"created"`         // 创建时间戳
	Author        string         `gorm:"size:200;not null" json:"author"`           // 评论作者
	AuthorID      uint           `gorm:"column:authorId;default:0" json:"author_id"` // 评论作者ID
	OwnerID       uint           `gorm:"column:ownerId;default:0" json:"owner_id"`   // 评论所属内容作者ID
	Mail          string         `gorm:"size:200" json:"mail"`                      // 评论者邮箱
	URL           string         `gorm:"size:200" json:"url"`                       // 评论者网址
	IP            string         `gorm:"size:64" json:"ip"`                         // 评论者IP
	Agent         string         `gorm:"size:200" json:"agent"`                     // 评论者UA
	Text          string         `gorm:"type:text" json:"text"`                     // 评论内容
	Type          string         `gorm:"size:16;default:'comment'" json:"type"`      // 评论类型
	Status        string         `gorm:"size:16;default:'approved'" json:"status"`   // 评论状态
	Parent        uint           `gorm:"default:0" json:"parent"`                   // 父级评论
	
	// GORM关联
	Post          Post           `gorm:"-" json:"post"`
	User          *User          `gorm:"-" json:"user"`
	Metas         []Meta         `gorm:"-" json:"metas"`
	Children      []Comment      `gorm:"-" json:"children"`
	
	// 辅助字段
	CreatedAt     time.Time      `gorm:"-" json:"created_at"`
	UpdatedAt     time.Time      `gorm:"-" json:"updated_at"`
	DeletedAt     gorm.DeletedAt `gorm:"index" json:"-"`
}

// BeforeCreate GORM钩子函数 - 创建评论前
func (c *Comment) BeforeCreate(tx *gorm.DB) error {
	c.Created = time.Now().Unix()
	return nil
}

// AfterFind GORM钩子函数 - 查询评论后
func (c *Comment) AfterFind(tx *gorm.DB) error {
	c.CreatedAt = time.Unix(c.Created, 0)
	return nil
}